<?php

namespace Think;

/**
 * 支付处理驱动类，可配置支付类型处理库
 * 目前只支持支付宝
 * @author winky (rorojr@163.com)
 */
class Payment{
	
	const ALIPAY              =   1; //常量，标识Alipay库类型
	/**
     * 支付处理驱动
     * @var resource
     */
    private $pay;
	
	/**
	 * 构造方法，用于实例化一个支付对象
	 * 
	 * @param string $type 要使用的类库，默认使用ALIPAY库
	 */
	public function __construct($type = self::ALIPAY, $payconfig = null) {
        /* 判断调用库的类型 */
        switch ($type) {
            case self::ALIPAY:
                $class = 'Alipay';
                break;
            default:
                E('不支持的支付类型');
        }

        /* 引入处理库，实例化支付处理对象 */
        $class  =    "Think\\Payment\\Driver\\{$class}";
		$this->pay = new $class ( $payconfig );
    }

    /**
     * 建立请求，以表单HTML形式构造（默认）
     * @param $para_temp 请求参数数组
     * @param $method 提交方式。两个值可选：post、get
     * @param $button_name 确认按钮显示文字
     * @return 提交表单HTML文本
     */
    public function buildRequestForm($para_temp, $method, $button_name) {
        return $this->pay->buildRequestForm($para_temp, $method, $button_name);
    }

    /**
     * 针对notify_url验证消息是否是支付宝发出的合法消息
     * @return 验证结果
     */
    public function verifyNotify(){      
        return $this->pay->verifyNotify();
    }
    
    /**
     * 针对return_url验证消息是否是支付宝发出的合法消息
     * @return 验证结果
     */
    public function verifyReturn(){
        return $this->pay->verifyReturn();
    }
}